<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
</head>
<body id="body">

<div id="content" role="group">

<main id="main" aria-hidden="true">
    <video controls="controls"></video>
    <select id="select"><option>a</select>
    <input type="range">
    <input type="data">
    <progress></progress>
    <ul id="ul"><li>item</li></ul>
    <select size="10"><option>a</select>
    <img src="resources/cake.png" width="145" height="126" usemap="#map">
    <map name="map">
        <area shape="rect" coords="0,0,100,100" href="#" alt="cake">
    </map>
</main>

</div>

<script>
function expectUnignoredChildren(parent, expected_unignored_child_indices) {
    for (let i = 0; i < parent.childrenCount; i++) {
      let child = parent.childAtIndex(i);
      if (expected_unignored_child_indices.includes(i)) {
        assert_false(child.isIgnored,
                    'Child#' + i + ' (' + child.role + ') ignored state: ');
      }
      else {
        assert_true(child.isIgnored,
                    'Child#' + i + ' (' + child.role + ') ignored state: ');
      }
    }
}

test(function(t) {
    var content = accessibilityController.accessibleElementById("main");
    assert_equals(content.childrenCount, 8);
    assert_true(content.isIgnored);
    expectUnignoredChildren(content, [0, 1, 2, 3, 6]);

    document.getElementById("ul").tabIndex = -1;
    assert_equals(content.childrenCount, 8,
                      "Making list focusable should make it unignored");
    assert_true(content.isIgnored);
    expectUnignoredChildren(content, [0, 1, 2, 3, 5, 6]);

    document.getElementById("ul").removeAttribute("tabindex");
    assert_equals(content.childrenCount, 8,
                          "Making list unfocusable should make it ignored again");
    assert_true(content.isIgnored);
    expectUnignoredChildren(content, [0, 1, 2, 3, 6]);
});
</script>

</body>
</html>
